home *** CD-ROM | disk | FTP | other *** search
- GUPI TITLE 'Generic Update Program for IBM 370' 00001000
- * 00002000
- * (c) 1987, J. F. Chandler 00003000
- * 00004000
- * Permission is granted to any individual or institution to copy or 00005000
- * use this program, except for explicitly commercial purposes. 00006000
- * 00007000
- * This program consists of two parts: generic (the present file 00008000
- * IK0GUP.ASM plus some macros shared with Kermit-370) and system- 00009000
- * specific (the file IKxGUP.ASM plus some more shared macros). Here, 00010000
- * "x" represents the target system code, such as "T" for TSO. IKxGUP 00011000
- * is composed of "COPY" elements (designed to be fetched from a macro 00012000
- * library) plus, perhaps, some specialized GUPI macros. The simplest 00013000
- * method of assembling this program is to make a macro library out of 00014000
- * IKxGUP or to include its members in the Kermit-370 library, if any. 00015000
- * Like the corresponding Kermit files IKxMAC.ASM, the specific part of 00016000
- * GUPI is divided into members by lines beginning "*COPY" and 00017000
- * containing the member name in columns 55-62. If the Kermit-370 00018000
- * macros are not kept in a library, the ones needed by GUPI can be 00019000
- * inserted by hand before the first EJECT. 00020000
- * 00021000
- * Kermit macros used in the generic code: 00022000
- * CLOSF, DMSFREE, DMSFRET, ENTER, EXIT, FDBD, FDBPAT, KCALL, @SC90047 00023290
- * KMAIN, @SC90047 00023580
- * LOCALS, LREG, OPENF, PTEXT, READF, RET, WRITF, WTEXT @SC88111 00024000
- * 00025000
- * 1. System-specific code is responsible for the interface between the 00026000
- * program on the one hand and the user and operating system on the 00027000
- * other. The user interface consists of supplying the following 00028000
- * information: 00029000
- * SRCNAM - file spec of the base source 00030000
- * CTLNAM - file spec of the update controls 00031000
- * OUTNAM - file spec of the output new source 00032000
- * MRKD - 3-character sequence label to be placed in columns 00033000
- * 73-75 of inserted or renumbered records in 5-column 00034000
- * updating mode. 00035000
- * FLG - byte of flags governing the options of in-core vs. 00036000
- * disk-to-disk updates and 5- vs. 8-column mode. 00037000
- * The system-specific code must also include subroutine DISKIO and 00038000
- * any other system-interface routines for error message, memory 00039000
- * management, and the like. 00040000
- * 00041000
- * 2. Generic code carries out the update function, reading the source 00042000
- * and control files and writing the updated output. In disk-to-disk 00043000
- * mode, GUPI makes a single pass (reading and writing in parallel 00044000
- * with minimal buffering), and the control commands must form a 00045000
- * non-overlapping monotonic sequence, but in-core update mode allows 00046000
- * any number of sub-sequences to be applied cumulatively by making 00047000
- * three passes: (1) read the entire source, (2) apply updates, and 00048000
- * (3) write out the new source. 00049000
- * 00050000
- * The update control file consists of control cards and data cards. 00051000
- * All control cards begin with './' in columns 1-2 followed by 00052000
- * free-form fields in columns 4-50, and all other cards are 00053000
- * considered data cards. In the following, parentheses denote 00054000
- * optional items, upper-case items are verbatim, and lower-case 00055000
- * items are 'variables' to be filled in. 00056000
- * 00057000
- * Comment: ./ * remarks 00058000
- * Annotates the update file. No other function. 00059000
- * 00060000
- * Sequence: ./ S seq1 inc (mark) 00061000
- * Resequences the entire source file. The output starts with 00062000
- * number 'seq1' and steps by 'inc'. If a 'mark' is supplied, it 00063000
- * replaces the default contents of columns 73-75. 00064000
- * 00065000
- * Delete: ./ D line1 (line2) 00066000
- * Removes source line 'line1' or lines 'line1' through 'line2' 00067000
- * inclusive. The starting and ending line numbers must exist 00068000
- * in the source file. 00069000
- * 00070000
- * Insert: ./ I line1 ($ seq1 inc) 00071000
- * Inserts the immediately following data cards after line 00072000
- * 'line1' (which must exist) in the source. The inserted cards 00073000
- * are resequenced from 'seq1' by 'inc' and must fit strictly 00074000
- * between line 'line1' and its successor. 00075000
- * 00076000
- * Replace: ./ R line1 (line2) ($ seq1 inc) 00077000
- * Deletes source lines as in the Delete command and then inserts 00078000
- * as in the Insert command except that the new cards are added 00079000
- * in place of the deleted range. 00080000
- * 00081000
- SPACE 4 @SC88111 00081100
- * Update history: @SC88111 00081200
- * Version 1.1 - 88/8/31 - Implement system-specific epilog, @SC88111 00081300
- * allow RECFM=V control file, use new @SC88111 00081400
- * FDBPAT macro @SC88111 00081500
- * Version 1.2 - 88/12/16- Correct RESEQ bug, more careful seq @SC88351 00081600
- * checking @SC88351 00081700
- * Version 1.3 - 90/02/16- Correct bug preventing replacement @SC90047 00081800
- * of first card, remove ADCON @SC90047 00081900
- EJECT 00082000
- PRINT NOGEN 00083000
- GBLC &STORDS @SC89268 00083300
- COPY GUPSPC @SC89268 00083600
- * Generic preliminaries 00084000
- FDBD 00085000
- * 00086000
- USING &STORDS,KWRKBASE @SC89268 00087000
- USING COMMON,10 00088000
- * 00089000
- * 00091000
- GUPI ENTER MAIN 00092000
- COPY GUPNIT 00093000
- TITLE 'Update: process control cards' 00094000
- OPN DS 0H 00095000
- MVC MRK,MRKD Default label field 00096000
- LA 3,CTLBUF 00097000
- ST 3,INSBP Set up control buffer 00098000
- MVC VARS(LVARS),IVARS 00099000
- OPENF I,SRCNAM,FDBP,SRC,E=OPNERR 00100000
- OPENF I,CTLNAM,FDBP,CTL,E=OPNERR 00101000
- OPENF O,OUTNAM,FDBP,OUT,E=OPNERR 00102000
- OI FLG,XXTOP Start at top of file 00103000
- ZAP LSTNO,=P'0' Clear sequence numbers 00104000
- ZAP OUTNO,=P'0' 00105000
- SR 6,6 00106000
- TM FLG,XXCOR In-core? 00107000
- BZ CTLP No, just start reading 00108000
- * 00109000
- * Read entire file into core 00110000
- BAL 9,GBLK 00111000
- LA 3,4(1) 00112000
- ST 3,INSBP Set up control buffer 00113000
- LA 6,SPTR 00114000
- RLP BAL 9,GBLK Get buffer 00115000
- LA 3,4(1) Start of card 00116000
- LR 4,1 Save ptr 00117000
- READF SRC,BUFFER=(3),E=RLPZ 00118000
- ST 4,0(6) Add to chain 00119000
- LR 6,4 00120000
- B RLP 00121000
- RLPZ C 15,=F'12' Eof? 00122000
- BNE DSKERR No, quit 00123000
- * 00124000
- * Main loop - read a control card 00125000
- CTLP L 3,INSBP Ptr to control buffer 00126000
- READF CTL,BUFFER=(3),E=CTLZ 00127000
- CLC =C'./ ',0(3) Control card? 00128000
- BNE ERR0 No, too bad 00129000
- CTLQ CH 0,*+10 R0 has length read @SC88244 00130000
- BNH *+8 @SC88244 00130200
- LA 0,50 Ignore anything after col 50 @SC88244 00130400
- AR 0,3 @SC88244 00130600
- LA 1,80(,3) End of card buffer @SC88244 00130800
- SR 1,0 Length to blank @SC88244 00131000
- SR 15,15 @SC88244 00131200
- ICM 15,8,=C' ' @SC88244 00131400
- MVCL 0,14 @SC88244 00131600
- LA 0,2(3) 00132000
- ST 0,COL Set up scan 00133000
- BAL 14,SCANN Find command 00134000
- NOP 0 00135000
- MVC CMD,0(3) 00136000
- CLI 1(3),C' ' Should be 1 char 00137000
- BNE ERR1 No, bad syntax 00138000
- CLI CMD,C'*' Comment? 00139000
- BE CTLP Yes, ignore it 00140000
- LA 1,4 00141000
- CMDLP IC 0,CMDTB-1(1) Get next command 00142000
- CLM 0,1,CMD Match? 00143000
- BE CMDF Ok 00144000
- BCT 1,CMDLP 00145000
- B ERR1 Bad command 00146000
- CMDTB DC C'SDIR' 00147000
- CMDF BCT 1,PROC Go if not sequence 00148000
- * Resequence source deck 00149000
- ZAP INCNO,=P'10' Default increment 00150000
- TM FLG,XX8 5-column? 00151000
- BZ *+10 Yes 00152000
- ZAP INCNO,=P'1000' 8-column default 00153000
- MVC NXTNO,INCNO 00154000
- MVC MRK,MRKD Default label field 00155000
- BAL 14,SCANN Get start value 00156000
- B SEQ1 Use defaults 00157000
- MVC NXTNO,ARGNO 00158000
- BAL 14,SCANN Get increment value 00159000
- B SEQ1 Use default 00160000
- MVC INCNO,ARGNO 00161000
- BAL 14,SCANN Check for label field 00162000
- NOP 0 00163000
- CLI 0(3),C' ' 00164000
- BE SEQ1 00165000
- MVC MRK,0(3) Use it 00166000
- SEQ1 ZAP ARGNO,=P'0' At start of file? 00167000
- BAL 14,SEQCHK 00168000
- SEQL BAL 14,NEXT Get a card @SC88351 00169000
- LTR 3,3 End? 00170000
- BZ CTLP Yes, back to control stream 00171000
- BAL 14,SNUM Renumber it 00172000
- B SEQL @SC88351 00173000
- * 00175000
- * Process an editing card 00176000
- PROC BAL 14,SCANN Get seqno 1 00177000
- B ERR1 Missing 00178000
- MVC NXTNO,ARGNO Default start 00179000
- LM 0,1,NXTNO 00180000
- SRL 1,24 Remove garbage 00181000
- LA 2,X'10' Default increment =P'1' 00182000
- LA 3,5 Max for checking 00183000
- PROCDL SRDL 0,4 Check next digit 00184000
- LTR 1,1 Found non-zero? 00185000
- BNZ PROCDF Yes, got it 00186000
- SLL 2,4 No, try * 10 00187000
- BCT 3,PROCDL 00188000
- PROCDF ST 2,TMPDW+4 00189000
- OI TMPDW+7,15 Fix sign 00190000
- ZAP INCNO,TMPDW+4(4) 00191000
- BAL 14,INCNXT Default start @SC88351 00192000
- BAL 14,SEQCHK Check order 00193000
- BAL 14,FIND Get proper source card 00194000
- ST 6,SAV6 Save current card ptr 00195000
- CLI CMD,C'I' 00196000
- BE *+8 No deletion 00197000
- OI FLG,XXKIL Delete 00198000
- BAL 14,SCANN Get end of range 00199000
- B PRC2 Just one card 00200000
- BAL 14,FIND Find end of range 00201000
- BAL 14,SCANN Should be followed by '$' 00202000
- B PRC2 Ok 00203000
- B ERR1 Oops, extra number there 00204000
- PRC2 BAL 14,NEXT Skip over this card 00205000
- BAL 14,KILL Delete, if necessary 00206000
- CLI CMD,C'D' 00207000
- BE CTLP Done if delete 00208000
- BAL 14,SCANN Insert starting number? 00209000
- B INSRT No, use defaults 00210000
- MVC NXTNO,ARGNO Yes 00211000
- CLC OUTNO,NXTNO Is it ok? 00212000
- BNL ERR3 Out of sequence 00213000
- BAL 14,SCANN Increment? 00214000
- B INSRT No, use default 00215000
- MVC INCNO,ARGNO 00216000
- INSRT L 3,INSBP Ptr to buffer 00217000
- INS3 READF CTL,BUFFER=(3),E=CTLZ 00218000
- CLC =C'./ ',0(3) 00219000
- BE INS5 End of insertion @SC88351 00220000
- AR 0,3 @SC88244 00220100
- LA 1,72(,3) Must fill to col 72 @SC88244 00220200
- SR 1,0 Length to blank, if any @SC88244 00220300
- BNP INS3A No need to fill @SC88244 00220400
- SR 15,15 @SC88244 00220500
- ICM 15,8,=C' ' @SC88244 00220600
- MVCL 0,14 Fill with blanks @SC88244 00220700
- INS3A DS 0H @SC88244 00220800
- BAL 14,SNUM Sequence new card 00221000
- TM FLG,XXCOR In-core? 00224000
- BZ INS4 No, write it out 00225000
- SH 3,EH4 Get chain ptr for buffer 00226000
- MVC 0(4,3),0(6) Insert into file 00227000
- ST 3,0(6) 00228000
- LR 6,3 New card is before 'current' one 00229000
- BAL 9,GBLK Get buffer 00230000
- EH4 EQU *+2 Offset to card 00231000
- LA 3,4(1) 00232000
- ST 3,INSBP 00233000
- B INS3 00234000
- INS4 WRITF OUT,BUFFER=(3),E=DSKERR 00235000
- B INS3 00236000
- INS5 CLC OUTNO,LSTNO Are we in order? @SC88351 00236200
- BNL ERR5 No, give up @SC88351 00236400
- B CTLQ @SC88351 00236600
- * 00237000
- * END OF CONTROL FILE INPUT 00238000
- CTLZ CLOSF CTL 00239000
- TM FLG,XXCOR In-core? 00240000
- BZ RDMP No, copy rest of source to output 00241000
- * Write out file and release storage 00242000
- LA 6,SPTR Start of file 00243000
- DMPLP ICM 6,15,0(6) Get next card 00244000
- BZ DMPZ Done 00245000
- LA 3,4(6) 00246000
- WRITF OUT,BUFFER=(3),E=DSKERR 00247000
- B DMPLP 00248000
- DMPZ L 6,BPTR Start of blocks 00249000
- FRELP LTR 1,6 Reached end of chain? 00250000
- BZ FREZ Yes, all released 00251000
- ICM 6,15,0(6) Ptr to next 00252000
- LA 0,(99*84+4)/8 00253000
- DMSFRET DWORDS=(0),LOC=(1) 00254000
- B FRELP 00255000
- * 00256000
- RDMP BAL 14,NEXT Get a card 00257000
- LTR 3,3 00258000
- BNZ RDMP Keep copying 00259000
- * B FREZ 00260000
- FREZ CLOSF OUT Close files 00261000
- CLOSF SRC 00262000
- SR 15,15 Ok 00263000
- QUIT DS 0H @SC88111 00264000
- COPY GUPFIN @SC88111 00264200
- RET MAIN @SC88111 00264400
- TITLE 'Update: various subroutines' 00265000
- * Renumber a source or inserted record 00266000
- SNUM UNPK 72(8,3),NXTNO Replace sequence field 00267000
- OI 79(3),C'0' Fix zone 00268000
- TM FLG,XX8 Is it 8-col? 00269000
- BO *+10 Yes 00270000
- MVC 72(3,3),MRK Just 5 00271000
- MVC OUTNO,NXTNO Note current number (inserted) @SC88351 00272000
- INCNXT AP NXTNO,INCNO @SC88351 00272500
- OI NXTNO+4,15 Set uniform sign code @SC88351 00273000
- BR 14 00274000
- * 00275000
- * Check sequence numbers. if out of order, assume new batch 00276000
- SEQCHK CP LSTNO,ARGNO Sequence ok? 00277000
- BNHR 14 Ok 00278000
- TM FLG,XXCOR In-core? 00279000
- BZ ERR2 No, can't back up 00280000
- OI FLG,XXTOP Yes, start at top 00281000
- ZAP LSTNO,=P'0' 00282000
- ZAP OUTNO,=P'0' @SC90047 00282500
- BR 14 00283000
- * 00284000
- * Remove deleted cards (if in-core) 00285000
- KILL TM FLG,XXKIL 00286000
- BZR 14 Not deleting 00287000
- NI FLG,255-XXKIL Now turn it off 00288000
- TM FLG,XXCOR In-core? 00289000
- BZR 14 No, cards were flushed already 00290000
- L 1,SAV6 -> start of range 00291000
- L 2,0(1) Start 00292000
- MVC 0(4,1),0(6) Unchain card(s) 00293000
- MVC 0(4,6),FPTR Put on free chain 00294000
- ST 2,FPTR 00295000
- LR 6,1 Fix current ptr 00296000
- BR 14 00297000
- * 00298000
- * Find desired sequence number 00299000
- FIND CLC LSTNO,ARGNO Match? @SC88351 00300000
- BER 14 Ok 00301000
- BH ERR6 Went too far 00302000
- ST 14,FNDSV @SC88111 00302500
- BAL 9,NEXTA Get next 00303000
- L 14,FNDSV @SC88111 00303500
- LTR 3,3 00304000
- BZ ERR6 Not found 00305000
- B FIND 00306000
- * 00307000
- * Get next card 00308000
- NEXT LR 9,14 Direct return 00309000
- NEXTA TM FLG,XXKIL+XXTOP 00310000
- BNZ NEXTB Nothing for output 00311000
- NEXTOK MVC OUTNO,LSTNO Save output sequence 00316000
- NEXTB TM FLG,XXCOR In-core? 00317000
- BZ RNEXT No, read it 00318000
- TM FLG,XXTOP 00319000
- BZ NEXTN 00320000
- LA 6,SPTR Start at top 00321000
- B NEXTS Rejoin with predecessor of new 00322000
- NEXTN ICM 3,15,0(6) Get ptr to current card, if any 00323000
- BZR 9 At eof 00324000
- LR 6,3 Move to next 00325000
- NEXTS ICM 3,15,0(6) Get ptr to new card, if any 00326000
- BZ NEXTZ At eof @SC88351 00327000
- LA 3,4(3) Ptr to card itself 00328000
- NEXTP NI FLG,255-XXINS-XXTOP Started down file 00329000
- MVC TMPDW,72(3) Copy sequence field 00330000
- TM FLG,XX8 00331000
- BO *+10 00332000
- MVC TMPDW(3),=C'000' Only 5 digits used 00333000
- TRT TMPDW,NUMB Valid? 00334000
- BNZR 9 00335000
- PACK LSTNO,TMPDW Save value 00336000
- BR 9 Return 00337000
- * 00338000
- RNEXT TM FLG,XXEOF Already hit end? 00339000
- BO RNXZ Yes, don't read again 00340000
- LA 3,SRCBUF 00341000
- TM FLG,XXKIL+XXTOP 00342000
- BNZ RNXA No current card, or killing anyway 00343000
- WRITF OUT,BUFFER=(3),E=DSKERR 00344000
- RNXA READF SRC,BUFFER=(3),E=RNXE 00345000
- B NEXTP 00346000
- RNXE C 15,=F'12' Eof? 00347000
- BNE DSKERR No, quit 00348000
- RNXZ SR 3,3 Indicate eof 00349000
- OI FLG,XXEOF Remember it 00350000
- NEXTZ MVI LSTNO,X'99' Mark infinite sequence number @SC88351 00350500
- BR 9 Return 00351000
- * 00352000
- * Add a block of buffers to free chain, then get one 00353000
- GMORE LA 0,(99*84+4)/8 Get 99 at once 00354000
- DMSFREE DWORDS=(0),ERR=ERR4 00355000
- MVC 0(4,1),BPTR Add to block chain 00356000
- ST 1,BPTR 00357000
- LA 1,4(1) First new buffer 00358000
- LA 0,99 Counter 00359000
- GCHN MVC 0(4,1),FPTR Add to chain 00360000
- ST 1,FPTR 00361000
- LA 1,84(1) 00362000
- BCT 0,GCHN 00363000
- * Get a free buffer (GBLK) ptr in R1 00364000
- GBLK ICM 1,15,FPTR 00365000
- BZ GMORE Need to get some more 00366000
- MVC FPTR,0(1) 00367000
- XC 0(4,1),0(1) Clear chain ptr 00368000
- BR 9 AND RETURN 00369000
- * 00370000
- * Find next numeric field in card, skip if ok 00371000
- SCANN SR 1,1 00372000
- L 3,COL Current position 00373000
- TRT 0(30,3),NBLNK Next non-blank 00374000
- BZR 14 Nothing 00375000
- LR 3,1 Ptr to field 00376000
- TRT 0(10,3),BLNK End of field 00377000
- BZR 14 Too long 00378000
- ST 1,COL New position 00379000
- CLI 0(3),C'0' Numeric? 00380000
- BLR 14 No, skip it 00381000
- BCTR 1,0 Last char 00382000
- SR 1,3 Count - 1 00383000
- EX 1,TRTN Check valid digits 00384000
- BNZ ERR1 Oops 00385000
- EX 1,PCKA 00386000
- OI ARGNO+4,15 Fix sign, just in case 00387000
- B 4(14) Got it 00388000
- PCKA PACK ARGNO,0(,3) 00389000
- TRTN TRT 0(,3),NUMB 00390000
- TITLE 'Update: error messages' 00391000
- ERR0 PTEXT 'MISSING CONTROL CARD' 00392000
- B ERPNC 00393000
- ERR1 PTEXT 'INVALID CONTROL CARD' 00394000
- B ERPRT 00395000
- ERR2 PTEXT 'CONTROL CARD OUT OF ORDER, DISK-TO-DISK MODE' 00396000
- B ERPNC 00397000
- ERR3 MVC LSTNO,NXTNO Get bad number 00398000
- B ERR5 00399000
- ERR4 PTEXT 'FREE STORAGE EXHAUSTED, TRY DISK-TO-DISK UPDATE' 00400000
- ERRMSG WTEXT (3),(4) Type it 00401000
- B ERREX 00402000
- ERR5 UNPK MSGS2,LSTNO Set up message 00403000
- OI MSGS2+7,C'0' 00404000
- UNPK MSGS1,OUTNO 00405000
- OI MSGS1+7,C'0' 00406000
- PTEXT MSGSQ,LMSGSQ 00407000
- B ERPNC 00408000
- ERR6 PTEXT 'SEQUENCE NUMBER NOT FOUND' 00409000
- B ERPRT 00410000
- ERPNC XC COL,COL No column indicator 00411000
- ERPRT WTEXT (3),(4) 00412000
- L 5,INSBP 00413000
- WTEXT (5),80 00414000
- ICM 3,15,COL Any column to mark 00415000
- BZ ERREX No 00416000
- MVI 0(5),C' ' Blank out buffer 00417000
- MVC 1(79,5),0(5) 00418000
- MVI 0(3),C'*' 00419000
- WTEXT (5),80 00420000
- ERREX LA 15,20 00421000
- B QUIT 00422000
- LOCALS 00423000
- QUPDT EXIT 00424000
- TITLE 'Update: Common code, constants, and variables' 00425000
- COMMON CSECT 00426000
- * 00427000
- * Utility routine to set up linkage 00428000
- SUBENT LR KSUBBASE,15 CSECT addressibility @SC89268 00429000
- L 15,STKPTR Current end of stack @SC86295 00430000
- AR 0,15 Our needs @SC86295 00431000
- C 0,STKLIM Does it fit? @SC86295 00432000
- BH SUBDIE No, (that's incredible) @SC86295 00433000
- ST 0,STKPTR New end @SC86295 00434000
- ST 13,4(15) Link subroutines @SC86295 00435000
- ST 15,8(13) @SC86295 00436000
- L 0,20(13) Restore R0 @SC86295 00437000
- LR 13,15 @SC86295 00438000
- BR 14 Go @SC86295 00439000
- SUBDIE LM 14,12,12(13) @SC86295 00440000
- SR 15,15 @SC86295 00441000
- BCTR 15,0 Set return code = -1 @SC86295 00442000
- BR 14 Go @SC86295 00443000
- * 00444000
- RTRN2 LA 15,2 Indicate error @SC86295 00445000
- B RTRN @SC86295 00446000
- RTRN0 SR 15,15 No errors @SC86295 00447000
- B RTRN @SC86295 00448000
- RTRN1 LA 15,1 Indicate error @SC86295 00449000
- RTRN ST 13,STKPTR Free the storage @SC86295 00450000
- L 13,4(13) Unlink @SC86295 00451000
- L 14,12(13) Restore registers @SC86295 00452000
- LM 0,12,20(13) @SC86295 00453000
- LTR 15,15 Test return code @SC86295 00454000
- BR 14 @SC86295 00455000
- * 00456000
- * Constants 00457000
- NBLNK DC 64X'1',X'0',191X'1' Find non-blank, if any 00458000
- BLNK DC 64X'0',X'1',191X'0' Find blank, if any 00459000
- NUMB DC 240X'1',10X'0',6X'1' Find non-digit, if any 00460000
- TRHEX EQU *-240 00461000
- DC C'0123456789ABCDEF' Convert to characters 00462000
- F4 DC F'4' 00463000
- F8 DC F'8' 00464000
- FDBP DS 0F Pattern for file FDB 00466000
- DC A(0,80) Buffer ptr, length 00467000
- FDBPAT ,F,80 F/80 file @SC88111 00469000
- IVARS DS 0D 00470000
- IMSGSQ DC C'SEQUENCE ERROR: ' 00471000
- DC CL8' ',C' TO ' 00472000
- DC CL8' ' 00473000
- * Variables 00474000
- &STORDS DSECT , @SC89268 00475000
- STORAG EQU * @SC89268 00475500
- TMPDW DS D For conversions 00476000
- STKLO DS A Start of stack space @SC89089 00476300
- STKHI DS A High extent of stack usage @SC89089 00476600
- STKPTR DS A Save area stack 00477000
- STKLIM DS A ditto 00478000
- SPTR DS A Ptr to start of file 00479000
- FPTR DS A Ptr to free list 00480000
- BPTR DS A Allocation block list 00481000
- INSBP DS A Ptr to control buffer 00482000
- COL DS A Current scan column ptr 00483000
- SAV6 DS A Saved card ptr 00484000
- FNDSV DS F Return address for FIND @SC88111 00484500
- DS 0F 00485000
- NXTNO DS PL5 Next sequence number for insert/reseq 00486000
- INCNO DS PL5 Sequencing increment 00487000
- LSTNO DS PL5 Current sequence number 00488000
- OUTNO DS PL5 Last card written 00489000
- ARGNO DS PL5 Number read from control card 00490000
- CTL DS F Ticket to control input 00492000
- SRC DS F Ticket to input source 00493000
- OUT DS F Ticket to output file 00494000
- CTLBUF DS CL80 Buffers 00495000
- SRCBUF DS CL80 00496000
- CMD DS C Control command 00497000
- MRK DS CL3 Sequence label field 00498000
- COPY GUPVAR System-specific variables 00499000
- VARS DS 0D 00500000
- MSGSQ DC C'SEQUENCE ERROR: ' 00501000
- MSGS1 DC CL8' ',C' TO ' 00502000
- MSGS2 DC CL8' ' 00503000
- LMSGSQ EQU *-MSGSQ 00504000
- LVARS EQU *-VARS 00505000
- * 00506000
- * User interface information 00507000
- SRCNAM DS CL(LFID) Input file name 00508000
- CTLNAM DS CL(LFID) Control file name 00509000
- OUTNAM DS CL(LFID) Output file name 00510000
- MRKD DS CL3 Default sequence label field 00511000
- FLG DS X Flags 00512000
- XXKIL EQU X'80' Deleting source records 00513000
- XXTOP EQU X'40' At top of file 00514000
- XXINS EQU X'20' Latest card is inserted 00515000
- XXEOF EQU X'10' Reached end of source 00516000
- XX8 EQU X'02' 8-column sequence field 00517000
- XXCOR EQU X'01' Perform update in-core 00518000
- DS 0D 00519000
- STODWDS EQU (*-STORAG)/8 Length of storage 00520000
- COPY GUPSUB 00521000
- * 00522000
- END GUPI 00523000
-